package com.kazusa.myservlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/*
* 请求乱码问题
* Tomcat8以上版本
* GET请求不会乱码
* Post请求乱码
* 通过设置服务器解析编码的格式
* 乱码原因：由于在解析过程中默认使用的编码方式为ISO-8859-1（此编码不支持中文），所以解析时一定会出现乱码
* 解决方法：request.setCharacterEncoding("UTF-8")
* post请求无论什么版本tomcat都会乱码
*注：request.setCharacterEncoding只对post请求有效
* String name=new String(request.getParameter("uname").getBytes("ISO-8859-1"),"UTF-8")对所有请求有效
*  */
@WebServlet("/requestError")
public class RequestGarbled extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
//        获取客户端传递参数
        request.setCharacterEncoding("UTF-8");/*设置服务器解析编码的格式，必须要设置，否则会出现乱码*/
        String uname=request.getParameter("uname");
        String upwd=request.getParameter("upwd");
        System.out.println("姓名"+uname);
        System.out.println("密码"+upwd);

        //解决tomcat7以及一般版本的Get请求乱码,表单换为GET请求
        String name=new String(request.getParameter("uname").getBytes("ISO-8859-1"),"UTF-8");
    }
}
